home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Simtel MSDOS 1995 January
/
Simtel - 10000 MSDOS Shareware Programs (Walnut Creek)(January 1995)(Disc 2).ISO
/
disc2
/
turbopas
/
twoscrn.pas
< prev
next >
Wrap
Pascal/Delphi Source File
|
1985-07-06
|
2KB
|
74 lines
program twoscrn;
{demonstration of two screen operation}
{(c) 1985 by nathan liskov, waltham mass}
{free to use but not to sell}
var
n:integer;
mpos:array [0..31] of array [0..1] of integer;
procedure saveparam(imode:integer); {save screen state}
var
n:integer;
begin
for n:=0 to 29 do
mpos[n,imode]:=mem[0:1097+n];
mpos[30,imode]:=wherey;
mpos[31,imode]:=wherex;
end;
procedure restoreparam(imode:integer); {restore screen state}
var
n:integer;
begin
for n:=0 to 29 do
mem[0:1097+n]:=mpos[n,imode];
gotoxy(mpos[31,imode],mpos[30,imode]);
end;
procedure tocolor; {to color monitor}
begin
saveparam(0); {save mono screen state}
mem[0:1040]:=(mem[0:1040] and 207) or 32; {to color monitor}
restoreparam(1); {restore previous color screen state}
end;
procedure tomono; {to mono monitor}
begin
saveparam(1); {save color screen state}
mem[0:1040]:=(mem[0:1040] and 207) or 48; {to mono monitor}
restoreparam(0); {restore previous mono screen state}
end;
procedure setupscreens; {save mono and color screen states}
begin {ends up on mono monitor}
if (mem[0:1040] and 207)=207 then {if current monitor is mono then...}
begin
saveparam(0); {save mono screen state}
mem[0:1040]:=(mem[0:1040] and 207) or 32; {to color screen}
end else
begin
saveparam(1) {save color screen state}
end;
textmode(0);
textbackground(1);
mem[0:1040]:=(mem[0:1040] and 207) or 48; {to mono screen}
textmode;
end;
begin
setupscreens;
tocolor;
graphcolormode;
graphbackground(1);
for n:=1 to 20 do
begin
tomono;
writeln('here i am! ',n);
tocolor;
draw(0,0,32*n,2*n*n,1);
{ gotoxy(1+n,2*n-1);}
writeln('no here i am! ',n);
end;
tomono;
end.